package io;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;

/**
 * 对象流：处理流/高级流
 * 作用：进行对象的序列化和反序列化
 *    对象序列化：将一个Java对象转换为一组字节的过程成为对象序列化
 *    反序列化： 字节还原成对象
 * */
public class OOSDemo {
    public static void main(String[] args) throws IOException {
        String name = "张三";
        int age = 20;
        String gender = "男";
        String[] otherData  = {"是一名","爱打篮球的","学生"};
        Student zs = new Student(name, age ,gender ,otherData);
        System.out.println(zs);
        /**
         * 对象输出流在序列化对象时，必须保证序列化对象类实现Serializable接口
         * 否则会报NotSerializableException异常
         * */
        FileOutputStream fos = new FileOutputStream("student.obj");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(zs);
        System.out.println("写出完毕");
        oos.close();
    }
}
